<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Agenda_lst( $this );

	class Agenda_lst extends Lst
	{
	function Agenda_lst( &$oModule )
		{
			$this->Lst ( $oModule );
			//
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'C':
				case 'E':
					$this->aShowColumns = array( 'Titulo' );
					break;
				case 'L':
					$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Dia', 'Horario', 'Titulo', 'Categoria' );
					break;
				case 'R':
					$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Dia', 'Horario', 'Titulo', 'Categoria', 'Ubicacion', 'Descripcion' );
					break;
			}
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Agenda_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			
			$this->aFields['ncGrupo'] = getParam('ncGrupo');
			$this->aFields['ncProyecto'] = getParam('ncProyecto');
			if ( $this->aFields['ncGrupo'] )
			{
				$oTab =& $this->setIndex( INDEX_USER, TAB_BOTTOM, 'ncCategoriaAgenda' );
				$cSql = "SELECT ncCategoriaAgenda, cdCategoriaAgenda, null, null, cColor FROM atCategoriaAgenda WHERE ncGrupo = " . $this->aFields['ncGrupo'];
				$oTab->setMatrix( $this->oDatabase->getMatrix($cSql) );
			}
			$this->setTitle ( "Agenda" );
			$this->setSummary( "Esta tabla contiene la Agenda de actividades" );
			// Setea las columnas
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ESTRELLA_ACTIVIDAD, 'ncAgenda', 'bEstrella' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_ACTIVIDAD, 'ncAgenda', 'atAgendaRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM atRotuloAgenda WHERE ncGrupo = ' . obtenerMiGrupo()   ) );

			$this->addColumn ( 'Dia', '', 'dDesde, nHoraDesde' );
			$this->addColumn ( 'Horario', '', true );
			$this->addColumn ( 'Titulo', 'cdAgenda' );
			$this->addColumn ( 'Categoria', 'cdCategoriaAgenda', true );
			$this->addColumn ( 'Descripcion', 'cDescripcion', true );
			$this->addColumn ( 'Ubicacion', 'cUbicacion', true );

			$this->oFecha = new dateObject();
			$this->oHora = new timeObject();
			$this->setColumnAction ( 'Titulo', VER_ACTIVIDAD, 'ncAgenda' );
		}
	function makeNewActionUrl( $cFecha, $cHorarioDesde, $cHorarioHasta )
		{
			$cUrl = '?' . PARAM_MODULE . '=' . $this->oModule->cModule . '&amp;' . PARAM_ACTION . '=' . AGREGAR_ACTIVIDAD . '&amp;' . PARAM_REFRESH . '=action';
			$cUrl .=  "&amp;dDesde=$cFecha&amp;nHoraDesde=$cHorarioDesde&amp;nHoraHasta=$cHorarioHasta&amp;";
			$cUrl .=  $this->getFieldString();
			return $cUrl ;
		}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'Color':
					$cReturn = $this->oDatabase->getData( "SELECT cColor FROM atCategoriaAgenda WHERE ncCategoriaAgenda = " . $aRow['ncCategoriaAgenda'] . " AND ncGrupo = " . $aRow['ncGrupo']);
					break;
				case 'KeyTo':
					$this->oHora->setValue ( $aRow['nHoraHasta'] );
					$cReturn = $this->oHora->getValue();
					break;
				case 'KeyFrom':
					$this->oHora->setValue ( $aRow['nHoraDesde'] );
					$cReturn = $this->oHora->getValue();
					break;
				case 'KeyDay':
					$this->oFecha->setValue( $aRow['dDesde'] );
					$cReturn =  $this->oFecha->getValue();
					break;
				case 'Dia':
					$this->oFecha->setValue( $aRow['dDesde'] );
					$cReturn = $this->oFecha->getShortDescription(false);
					if ( $aRow['dHasta'] )
					{
						$this->oFecha->setValue( $aRow['dHasta'] );
						$cReturn .= ' al ' . $this->oFecha->getShortDescription();
					} else
					{
						$cReturn = $this->oFecha->getWeekDayNameShort() . ' ' . $cReturn ;
					}
					break;
				case 'Horario':
					$cReturn = "";
					$this->oHora->setValue ( $aRow['nHoraDesde'] );
					if ( $aRow['nHoraDesde'] ) $cReturn = $this->oHora->getDescription() ;
					$this->oHora->setValue ( $aRow['nHoraHasta'] );
					if ( $aRow['nHoraHasta'] ) $cReturn .=  ' a ' . $this->oHora->getDescription();
					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function query()
		{
			$ncMiGrupo = obtenerMiGrupo();
			// Arma el Query 1ra Parte Agenda
				$cSql = "SELECT Age.bEstrella, Age.dDesde, Age.ncAgenda, Age.ncCategoriaAgenda, Age.ncGrupo, Age.cdAgenda, Age.dHasta, Age.nHoraDesde, Age.nHoraHasta, Age.cUbicacion, cdCategoriaAgenda, Age.cDescripcion
							FROM atAgenda as Age
						LEFT JOIN atCategoriaAgenda AS CAg
							ON CAg.ncGrupo = Age.ncGrupo
							AND CAg.ncCategoriaAgenda  = Age.ncCategoriaAgenda ";
				$cSql .= armarJoin (" JOIN atProyectoActividad as PAc ON PAc.ncAgenda = Age.ncAgenda AND PAc.ncProyecto = $ncProyecto", $ncProyecto);
			// Arma el Filtro de la Consulta
				$this->oFiltro->setDefaultSearchField( "cdAgenda" );
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray() , 'Age' );
				if ( $this->getOptionView() == 'C' ) list( $dDesde, $dHasta ) = $this->getDateRange();
				if ( $dDesde && $dHasta ) $this->oWhere->add( "Age.dDesde", "$dDesde,$dHasta", "between");
				if ( $ncMiGrupo )
					$this->oWhere->addExpression ( "Age.ncVisibilidad", " (Age.ncVisibilidad <> " . VISIBILIDAD_PRIVADO . " OR Age.ncGrupo = $ncMiGrupo) " );
				else
					$this->oWhere->addExpression ( "Age.ncVisibilidad", " Age.ncVisibilidad = " . VISIBILIDAD_PUBLICO );
				if ( !$dDesde && !$ncAgenda) $this->oWhere->addExpression ( "dDesde",  "dDesde >= " . $this->oDatabase->dbDate()  );
				return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$ncGrupo = getParam( 'ncGrupo');
			$cParametroRegistro =  "ncProyecto=" . $this->aFields["ncProyecto"] ;
			list( $dDesde, $dHasta ) = $this->getDateRange();
			if ( $dDesde == $dHasta )
			{
				$cParametroRegistro .= '&amp;dDesde=' . $dDesde;
			}
			if ( $ncGrupo  == '' || $ncGrupo  == obtenerMiGrupo() )
			{
				$this->addListAction ( AGREGAR_ACTIVIDAD, $cParametroRegistro, 'I', VENTANA_SECUNDARIA );
			}
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncAgenda=" . $aRow["ncAgenda"];
			$this->addRowAction ( MODIFICAR_ACTIVIDAD, $cParametroRegistro, '', VENTANA_SECUNDARIA );
			$this->addRowAction ( ELIMINAR_ACTIVIDAD, $cParametroRegistro);
			$this->addRowAction ( VER_ACTIVIDAD, $cParametroRegistro);
		}
	function makeComplex()
		{
			// Orgnizacion
			$oLst = $this->oModule->loadClass ( "agenda_invitado_lst" );
			$oLst->aFields['ncAgenda'] = $this->aFields['ncAgenda'];
			$oLst->setNoPaging();
			$oLst->open();
			$oLst->makeLst();
		}
	}
?>
